<?php

class Training_NewsController extends Zendvn_Controller_Action {

    protected $_acl;


    public function init() {
        parent::init();
        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
        
        $acl = new Zend_Acl();
        
        //Khai báo các nhóm (Role)
        $acl->addRole(new Zend_Acl_Role('Guest'))
            ->addRole(new Zend_Acl_Role('Member'), 'Guest')
            ->addRole(new Zend_Acl_Role('Manager'), 'Member')
            ->addRole(new Zend_Acl_Role('Administrator'));
        
        //Khai báo các resource ( News - Blog - Product )
        $acl->addResource(new Zend_Acl_Resource('news'))
            ->addResource(new Zend_Acl_Resource('blog'))
            ->addResource(new Zend_Acl_Resource('products'));
        
        //Khai báo danh sách các action mà nhóm có quyền truy cập
        $guestPrivileges = array('index', 'view');
        $memberPrivileges = array('add');
        $managerPrivileges = array('edit', 'delete');
        
        //Cấp quyền truy cập cho các nhóm vào NewsController
        $acl->allow('Guest', 'news', $guestPrivileges);
        $acl->allow('Member', 'news', $memberPrivileges);
        $acl->allow('Manager', 'news', $managerPrivileges);
        $acl->allow('Administrator');
        
        //Cấp quyền truy cập cho các nhóm vào BlogController
        $acl->allow('Guest', 'blog', $guestPrivileges);
        $acl->allow('Member', 'blog', $memberPrivileges);
        $acl->allow('Manager', 'blog', $managerPrivileges);
        $acl->allow('Administrator');

        
//        $acl->allow('Guest', null, $guestPrivileges);
//        $acl->allow('Member', null, $memberPrivileges);
//        $acl->allow('Manager', null, $managerPrivileges);
//        $acl->allow('Administrator');
        
        //Cấm truy cập
//        $acl->deny('Manager', null, array('add'));
        
        $this->_acl = $acl;
        
        echo '<br>Nhom: ' . $role = 'Manager';
        echo '<br>Action: ' . $privilege = 'add';
        echo '<br>Controller: ' . $resource = 'news';
        
        if($this->_acl->isAllowed($role, $resource, $privilege)){
            echo '<br> Bạn được quyền truy cập vào Action này';
        }  else {
            echo '<br> Bạn không được quyền truy cập vào Action này';
        }
    }

    public function indexAction() {
        echo '<br/>' . __METHOD__;
    }
    
    public function addAction() {
        echo '<br/>' . __METHOD__;
    }
    
    public function viewAction() {
        echo '<br/>' . __METHOD__;
    }
    
    public function editAction() {
        echo '<br/>' . __METHOD__;
    }
    
    public function deleteAction() {
        echo '<br/>' . __METHOD__;
    }
}
